How can I disable Camera Reaction Effects on macOS

I have an app that has the camera continuously running, as it is doing its own AI, have zero need for Apple'video effects, and am seeing a 200% performance hit after updating to Sonoma. The video effects are the "heaviest stack trace" when profiling my app with Instruments CPU profiler (see below).

Is forcing your software onto developers not something Microsoft would do? Is there really no way to opt out?

6671 Jamscape_exp (23038) 2697 start_wqthread 2697 _pthread_wqthread 2183 _dispatch_workloop_worker_thread 2156 _dispatch_root_queue_drain_deferred_wlh 2153 _dispatch_lane_invoke 2146 _dispatch_lane_serial_drain 1527 _dispatch_client_callout 1493 _dispatch_call_block_and_release 777 __88-[PTHandGestureDetector initWithFrameSize:asyncInitQueue:externalHandDetectionsEnabled:]_block_invoke 777 -[VCPHandGestureVideoRequest initWithOptions:] 508 -[VCPHandGestureClassifier initWithMinHandSize:] 508 -[VCPCoreMLRequest initWithModelName:] 506 +[MLModel modelWithContentsOfURL:configuration:error:] 506 -[MLModelAsset modelWithError:] 506 -[MLModelAsset load:] 506 +[MLLoader loadModelFromAssetAtURL:configuration:error:] 506 +[MLLoader _loadModelFromAssetAtURL:configuration:loaderEvent:error:] 505 +[MLLoader _loadModelFromArchive:configuration:loaderEvent:useUpdatableModelLoaders:error:] 505 +[MLLoader _loadWithModelLoaderFromArchive:configuration:loaderEvent:useUpdatableModelLoaders:error:] 505 +[MLLoader _loadModelFromArchive:configuration:modelVersion:compilerVersion:loaderEvent:useUpdatableModelLoaders:loadingClasses:error:] 505 +[MLLoader _loadModelWithClass:fromArchive:modelVersionInfo:compilerVersionInfo:configuration:error:] 445 +[MLMultiFunctionProgramEngine loadModelFromCompiledArchive:modelVersionInfo:compilerVersionInfo:configuration:error:] 333 -[MLMultiFunctionProgramEngine initWithProgramContainer:configuration:error:] 333 -[MLNeuralNetworkEngine initWithContainer:configuration:error:] 318 -[MLNeuralNetworkEngine _setupContextAndPlanWithConfiguration:usingCPU:reshapeWithContainer:error:] 313 -[MLNeuralNetworkEngine _addNetworkToPlan:error:] 313 espresso_plan_add_network 313 EspressoLight::espresso_plan::add_network(char const*, espresso_storage_type_t) 313 EspressoLight::espresso_plan::add_network(char const*, espresso_storage_type_t, std::__1::shared_ptr<Espresso::net>) 313 Espresso::load_network(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<Espresso::abstract_context> const&, Espresso::compute_path, bool) 235 Espresso::reload_network_on_context(std::__1::shared_ptr<Espresso::net> const&, std::__1::shared_ptr<Espresso::abstract_context> const&, Espresso::compute_path) 226 Espresso::load_and_shape_network(std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<Espresso::abstract_context> const&, Espresso::network_shape const&, Espresso::compute_path, std::__1::shared_ptr<Espresso::blob_storage_abstract> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) 214 Espresso::load_network_layers_internal(std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, std::__1::shared_ptr<Espresso::abstract_context> const&, Espresso::network_shape const&, std::__1::basic_istream<char, std::__1::char_traits<char>>, Espresso::compute_path, bool, std::__1::shared_ptr<Espresso::blob_storage_abstract> const&) 208 Espresso::run_dispatch_v2(std::__1::shared_ptr<Espresso::abstract_context>, std::__1::shared_ptr<Espresso::net>, std::__1::vector<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::allocator<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>>> const&, Espresso::network_shape const&, Espresso::compute_path const&, std::__1::basic_istream<char, std::__1::char_traits<char>>) 141 try_dispatch(std::__1::shared_ptr<Espresso::abstract_context>, std::__1::shared_ptr<Espresso::net>, std::__1::vector<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::allocator<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>>> const&, Espresso::network_shape const&, Espresso::compute_path const&, std::__1::basic_istream<char, std::__1::char_traits<char>>, Espresso::platform const&, Espresso::compute_path const&) 131 Espresso::get_net_info_ir(std::__1::shared_ptr<Espresso::abstract_context>, std::__1::shared_ptr<Espresso::net>, std::__1::vector<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::allocator<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>>> const&, Espresso::network_shape const&, Espresso::compute_path const&, Espresso::platform const&, Espresso::compute_path const&, std::__1::shared_ptr<Espresso::cpu_context_transfer_algo_t>&, std::__1::shared_ptr<Espresso::net_info_ir_t>&, std::__1::shared_ptr<Espresso::kernels_validation_status_t>&) 131 Espresso::cpu_context_transfer_algo_t::create_net_info_ir(std::__1::vector<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::allocator<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>>> const&, std::__1::shared_ptr<Espresso::abstract_context>, Espresso::network_shape const&, Espresso::compute_path, std::__1::shared_ptr<Espresso::net_info_ir_t>) 120 Espresso::cpu_context_transfer_algo_t::check_all_kernels_availability_on_context(std::__1::vector<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::allocator<std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>>> const&, std::__1::shared_ptr<Espresso::abstract_context>&, Espresso::compute_path, std::__1::shared_ptr<Espresso::net_info_ir_t>&) 120 is_kernel_available_on_engine(unsigned long, std::__1::shared_ptr<Espresso::base_kernel>, Espresso::kernel_info_t const&, std::__1::shared_ptr<Espresso::SerDes::generic_serdes_object>, std::__1::shared_ptr<Espresso::abstract_context>, Espresso::compute_path, std::__1::shared_ptr<Espresso::net_info_ir_t>, std::__1::shared_ptr<Espresso::kernels_validation_status_t>) 83 Espresso::ANECompilerEngine::mix_reshape_kernel::is_valid_for_engine(std::__1::shared_ptr<Espresso::kernels_validation_status_t>, Espresso::base_kernel::validate_for_engine_args_t const&) const 45 int ValidateLayer<ANECReshapeLayerDesc, ZinIrReshapeUnit, ZinIrReshapeUnitInfo, ANECReshapeLayerDescAlternate>(void, ANECReshapeLayerDesc const*, ANECTensorDesc const*, unsigned long, unsigned long*, ANECReshapeLayerDescAlternate**, ANECTensorValueDesc const*) 45 void ValidateLayer_Impl<ANECReshapeLayerDesc, ZinIrReshapeUnit, ZinIrReshapeUnitInfo, ANECReshapeLayerDescAlternate>(void*, ANECReshapeLayerDesc const*, ANECTensorDesc const*, unsigned long, unsigned long*, ANECReshapeLayerDescAlternate**, ANECTensorValueDesc const*)

(...)

Does this page help you? The second paragraph tells you how to turn them on or off.

Hi and thank you for the suggestion.

Unfortunately turned the Reactions off does not remove the CPU/GPU overhead. The CPU stack trace was captured with all Reactions disabled in the UI.

Also, I don't want to have to ask my users to help me workaround what really seems like a bug/design flaw in the macOS APIs. I need to be able to programmatically disable this without asking for help from the user.

Then this is more of a bug than anything we can do here to help you. Raise a Feedback report.

How can I disable Camera Reaction Effects on macOS
 
 
Q